#ifndef LINKED_QUEUE_H
#define LINKED_QUEUE_H

#include <stdio.h>
#include <stdlib.h>

// 定义链表结点
typedef struct node_s{
    int data;
    struct node_s *next;
}node_t;

// 定义链队列结构体
typedef struct queue_s{
    node_t *head;  // 队首指针
    node_t *tail;  // 队尾指针
    int size;      // 队列大小
    int capacity;  // 队列容量
}queue_t;

// 初始化队列
void queue_init(queue_t *queue, int capacity);

// 队尾入队：入队成功返回0
int queue_append(queue_t *queue, int data);

// 队首出队：出队成功返回队首元素，否则返回-1
int queue_pop(queue_t *queue);

// 打印队列
void queue_print(queue_t *queue);

#endif // LINKED_QUEUE_H